﻿'''
题目描述
喊7是一个传统的聚会游戏，N个人围成一圈，按顺时针从1到N编号。
编号为1的人从1开始喊数，下一个人喊的数字为上一个人的数字加1，但是当将要喊出来的数字是7的倍数或者数字本身含有7的话，不能
把这个数字直接喊出来，而是要喊”过”。
假定玩这个游戏的N个人都没有失误地在正确的时机喊了”过”，当喊到数字K时，可以统计每个人喊”过”的次数。
现给定一个长度为N的数组，存储了打乱顺序的每个人喊”过”的次数，请把它还原成正确的顺序，即数组的第i个元素存储编号i的人
喊”过”的次数。
输入描述
输入为一行，为空格分隔的喊”过”的次数，注意K并不提供，K不超过200，而数字的个数即为N。
输出描述
输出为一行，为顺序正确的喊”过”的次数，也由空格分隔。
示例1
输入
0 1 0
输出
1 0 0
说明
一共只有一次喊”过”，那只会发生在需要喊7时，按顺序，编号为1的人会遇到7，故输出1 0 0。
示例2
输入
2 0 1 0 0
输出
0 2 0 1 0
说明
一共有三次喊”过”，发生在7 14 17，按顺序，编号为2的人会遇到7 17，编号为4的人会遇到14，故输出0 2 0 1 0。
'''
#输入描述：如：0 1 0
#输入为一行，为空格分隔的喊”过”的次数，注意K并不提供，K不超过200，而数字的个数即为N。
#输出描述：如：1 0 0
#输出为一行，为顺序正确的喊”过”的次数，也由空格分隔
#读取输入并存储到数组
passArr = list(map(int,input().split()))
#计算人数N
n = len(passArr)
#统计喊过的总次数
totalCount = sum(passArr)

#新建数组，初始化为喊‘过’次数为0
newPassArr = [0] * n
#模拟从1到K的过程，并更新喊‘过’的数组
#定义从1开始
currentNum = 1
#开始人数下标为0-（n-1）
currentIndex = 0
while totalCount > 0:   #喊‘过’次数大于0
    #喊到7或7的倍数或数字含7
    if currentNum % 7 == 0 or str(currentNum).find('7') != -1:  #find()找到返回索引，否则返回-1
        newPassArr[currentIndex] += 1   #更新喊‘过’数组，相应人的次数+1
        totalCount -= 1     #喊‘过’总数-1
    #否则，数字+1，index+1(注意取模n),不论if是否执行都要更新
    currentNum += 1
    currentIndex = (currentIndex + 1) % n
#输出更新后的数组
for i in range(len(newPassArr)-1):
    print(newPassArr[i],end= ' ')
print(newPassArr[-1])

#或者使用str.join()，注意需将数字转换为字符串
#output = ' '.join(str(num) for num in newPassArr) #或' '.join(map(str,newPassArr))
#print(output)

